home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / msn / SOAP / wsdl2py.pyo (.txt) < prev   
Python Compiled Bytecode  |  2008-10-13  |  7KB  |  156 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. import exceptions
  5. import sys
  6. import optparse
  7. import os
  8. import warnings
  9. import ZSI
  10. from ConfigParser import ConfigParser
  11. from ZSI.generate.wsdl2python import WriteServiceModule, ServiceDescription
  12. from ZSI.wstools import WSDLTools, XMLSchema
  13. from ZSI.wstools.logging import setBasicLoggerDEBUG
  14. from ZSI.generate import containers, utility
  15. from ZSI.generate.utility import NCName_to_ClassName as NC_to_CN, TextProtect
  16. warnings.filterwarnings('ignore', '', exceptions.UserWarning)
  17.  
  18. def SetDebugCallback(option, opt, value, parser, *args, **kwargs):
  19.     setBasicLoggerDEBUG()
  20.     warnings.resetwarnings()
  21.  
  22.  
  23. def SetPyclassMetaclass(option, opt, value, parser, *args, **kwargs):
  24.     TypecodeContainerBase = TypecodeContainerBase
  25.     TypesHeaderContainer = TypesHeaderContainer
  26.     import ZSI.generate.containers
  27.     TypecodeContainerBase.metaclass = kwargs['metaclass']
  28.     TypesHeaderContainer.imports.append('from %(module)s import %(metaclass)s' % kwargs)
  29.  
  30.  
  31. def formatSchemaObject(fname, schemaObj):
  32.     
  33.     class fake:
  34.         pass
  35.  
  36.     f = fake()
  37.     if fname.rfind('/'):
  38.         tmp = fname[fname.rfind('/') + 1:].split('.')
  39.     else:
  40.         tmp = fname.split('.')
  41.     f.name = tmp[0] + '_' + tmp[1]
  42.     f.types = {
  43.         schemaObj.targetNamespace: schemaObj }
  44.     return f
  45.  
  46. if __name__ == '__main__':
  47.     
  48.     def doCommandLine(**kw):
  49.         op = optparse.OptionParser()
  50.         op.add_option('-f', '--file', action = 'store', dest = 'file', default = None, type = 'string', help = 'file to load wsdl from')
  51.         op.add_option('-u', '--url', action = 'store', dest = 'url', default = None, type = 'string', help = 'URL to load wsdl from')
  52.         op.add_option('-x', '--schema', action = 'store_true', dest = 'schema', default = False, help = 'process just the schema from an xsd file [no services]')
  53.         op.add_option('-d', '--debug', action = 'callback', callback = SetDebugCallback, help = 'debug output')
  54.         op.add_option('-a', '--address', action = 'store_true', dest = 'address', default = False, help = 'ws-addressing support, must include WS-Addressing schema.')
  55.         op.add_option('-b', '--complexType', action = 'callback', callback = SetPyclassMetaclass, callback_kwargs = {
  56.             'module': 'ZSI.generate.pyclass',
  57.             'metaclass': 'pyclass_type' }, help = 'add convenience functions for complexTypes, including Getters, Setters, factory methods, and properties (via metaclass).')
  58.         op.add_option('-e', '--extended', action = 'store_true', dest = 'extended', default = False, help = 'Do Extended code generation.')
  59.         op.add_option('-z', '--aname', action = 'store', dest = 'aname', default = None, type = 'string', help = 'pass in a function for attribute name creation')
  60.         op.add_option('-t', '--types', action = 'store', dest = 'types', default = None, type = 'string', help = 'file to load types from')
  61.         op.add_option('-o', '--output-dir', action = 'store', dest = 'output_directory', default = '.', type = 'string', help = 'file to load types from')
  62.         op.add_option('-s', '--simple-naming', action = 'store_true', dest = 'simple_naming', default = False, help = 'Simplify generated naming.')
  63.         op.add_option('-c', '--clientClassSuffix', action = 'store', dest = 'clientClassSuffix', default = None, type = 'string', help = 'Suffix to use for service client class (default "SOAP")')
  64.         op.add_option('-m', '--pyclassMapModule', action = 'store', dest = 'pyclassMapModule', default = None, type = 'string', help = 'Python file that maps external python classes to a schema type.  The classes are used as the "pyclass" for that type.  The module should contain a dict() called mapping in the format: mapping = {schemaTypeName:(moduleName.py,className) }')
  65.         (options, args) = op.parse_args()
  66.         print options
  67.         return (options, args)
  68.  
  69. else:
  70.     
  71.     def doCommandLine(complexType = True, debug = False, **kw):
  72.         Storage = Storage
  73.         import util
  74.         if debug:
  75.             SetDebugCallback(None, None, None, None)
  76.         
  77.         if complexType:
  78.             SetPyclassMetaclass(None, None, None, None, **{
  79.                 'module': 'ZSI.generate.pyclass',
  80.                 'metaclass': 'pyclass_type' })
  81.         
  82.         options = Storage(file = None, url = None, schema = False, simple_naming = False, clientClassSuffix = None, aname = None, pyclassMapModule = None, address = False, extended = False, types = None, output_directory = '.')
  83.         options.update(kw)
  84.         return (options, ())
  85.  
  86.  
  87. def main(**kw):
  88.     (options, args) = doCommandLine(**kw)
  89.     if not options.file:
  90.         pass
  91.     location = options.url
  92.     if options.schema is True:
  93.         reader = XMLSchema.SchemaReader(base_url = location)
  94.     else:
  95.         reader = WSDLTools.WSDLReader()
  96.     wsdl = None
  97.     if options.file is not None:
  98.         wsdl = reader.loadFromFile(location)
  99.     elif options.url is not None:
  100.         wsdl = reader.loadFromURL(location)
  101.     
  102.     if options.simple_naming:
  103.         WriteServiceModule.client_module_suffix = '_client'
  104.         ServiceDescription.separate_messages = True
  105.         containers.SetTypeNameFunc((lambda n: '%s_' % NC_to_CN(n)))
  106.         containers.SetElementNameFunc((lambda n: '%s' % NC_to_CN(n)))
  107.         
  108.         containers.ContainerBase.func_aname = lambda instnc, n: TextProtect(str(n))
  109.         
  110.         utility.namespace_name = lambda cls, ns: utility.Namespace2ModuleName(ns)
  111.     
  112.     if options.clientClassSuffix:
  113.         ServiceContainerBase = ServiceContainerBase
  114.         import ZSI.generate.containers
  115.         ServiceContainerBase.clientClassSuffix = options.clientClassSuffix
  116.     
  117.     if options.schema is True:
  118.         wsdl = formatSchemaObject(location, wsdl)
  119.     
  120.     if options.aname is not None:
  121.         args = options.aname.rsplit('.', 1)
  122.         TypecodeContainerBase = TypecodeContainerBase
  123.         import ZSI.generate.containers
  124.         TypecodeContainerBase.func_aname = staticmethod(FUNC)
  125.     
  126.     if options.pyclassMapModule != None:
  127.         mod = __import__(options.pyclassMapModule)
  128.         components = options.pyclassMapModule.split('.')
  129.         for comp in components[1:]:
  130.             mod = getattr(mod, comp)
  131.         
  132.         extPyClasses = mod.mapping
  133.     else:
  134.         extPyClasses = None
  135.     wsm = WriteServiceModule(wsdl, addressing = options.address, do_extended = options.extended, extPyClasses = extPyClasses)
  136.     if options.types != None:
  137.         wsm.setTypesModuleName(options.types)
  138.     
  139.     if options.schema is False:
  140.         fd = open(os.path.join(options.output_directory, '%s.py' % wsm.getClientModuleName()), 'w+')
  141.         if not options.simple_naming:
  142.             wsm.writeClient(fd)
  143.         else:
  144.             msg_fd = open(os.path.join(options.output_directory, '%s.py' % wsm.getMessagesModuleName()), 'w+')
  145.             wsm.writeClient(fd, msg_fd = msg_fd)
  146.             msg_fd.close()
  147.         fd.close()
  148.     
  149.     fd = open(os.path.join(options.output_directory, '%s.py' % wsm.getTypesModuleName()), 'w+')
  150.     wsm.writeTypes(fd)
  151.     fd.close()
  152.  
  153. if __name__ == '__main__':
  154.     main()
  155.  
  156.